#include "SRPlatform_iOS.h"
#import <OpenGLES/EAGL.h>

namespace sora
{
	Platform_iOS::Platform_iOS()
	: Platform(), rendererType_(RendererTypeGLES1), width_(0), height_(0)
	{
	}
	Platform_iOS::~Platform_iOS()
	{
	}


	bool Platform_iOS::canUseGLES1() const
	{
		//설마 gles1도 사용불가?
		return true;
	}
	bool Platform_iOS::canUseGLES2() const
	{
		EAGLContext *ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
		bool result;
		if(ctx == nil)
			result = false;
		else
			result = true;
		[ctx release];
		return result;
	}

	bool Platform_iOS::getRendererType() const
	{
		return rendererType_;
	}
	bool Platform_iOS::setRendererType(RendererType type)
	{
		switch (type) {
			case RendererTypeGLES1:
				rendererType_ = type;
				return true;
				break;
			case RendererTypeGLES2:
			{
				if(canUseGLES2() == false)
				{
					rendererType_ = RendererTypeGLES1;	//생성가능한 gles1.1로 유지
					return false;
				}
				//else..
				rendererType_ = type;
				return true;
			}
				break;
			default:
				assert(!"not valid renderer type");
				break;
		}
		return false;
	}

	//EAGL의 제약으로 glview는 한번에 1개씩만 존재한다. GLview를 설정해놓으면 해당항목에 접근해서
	//필요한 변수를 얻을수 있을 것이다
	int Platform_iOS::width() const
	{
		assert(width_ > 0);
		return width_;
	}
	int Platform_iOS::height() const
	{
		assert(height_ > 0);
		return height_;
	}
	void Platform_iOS::setScreenSize(int width, int height)
	{
		width_ = width;
		height_ = height;
	}

}

